/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */
package com.sys.midware.redis.core.handler;

import com.sys.midware.redis.core.operation.HashOperations;
import com.sys.midware.redis.core.operation.KeyOperations;
import com.sys.midware.redis.core.operation.ListOperations;
import com.sys.midware.redis.core.operation.SetOperations;
import com.sys.midware.redis.core.operation.StringsOperations;
import com.sys.midware.redis.core.operation.ZSetOperations;

/**
 * 
 * <b>ClassName：</b> RedisHandler <br/>
 * <b>Description：</b> redis 处理类 <br/>
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2016年1月7日 上午10:49:02 <br/>
 * <b>@version: </b>  <br/>
 */
public interface RedisHandler {
    
    /**
     * 刷新缓存
     * @param key
     * @param value
     * @return  boolean <br/>
     */
    public void clear () ;
    /**
     * 获取redis中的数量
     * @param key
     * @param value
     * @return  boolean <br/>
     */
    public Long getSize () ;
    /**
     * 保存一个k-V
     * save <br/> 
     * @param key
     * @param value
     * @return  boolean <br/>
     */
    public  <K, V> boolean save (K key, V value) ;
    /**
     * 保存一个K-V,并设置有效期
     * save <br/> 
     * @param key
     * @param value
     * @param expireTimeSeconds
     * @return  boolean <br/>
     */
    public  <K, V> boolean save(K key, V value, int expireTimeSeconds);
    /**
     * 设置有效期
     * expire <br/> 
     * @param key
     * @param seconds
     * @return  long <br/>
     */
    public  <K> long expire(K key, int seconds);
    /**
     * 
     * 查看键的剩余生存时间 <br/> 
     * ttl <br/> 
     * @param key
     * @return  long <br/>
     */
    public <K> long ttl(K key);
    /**
     * 获取对象
     * get <br/> 
     * @param key
     * @return  V <br/>
     */
    public  <K, V> V get(K key);
    /**
     * 删除多个Key <br/> 
     * del <br/> 
     * @param keys
     * @return  boolean <br/>
     */
    public  boolean delete(Object... keys) ;
    
    /**
     * 操作String
     * opsForString <br/> 
     * @return  ListOperations <br/>
     */
    public StringsOperations opsForString();
    /**
     * 操作list
     * opsForList <br/> 
     * @return  ListOperations <br/>
     */
    public ListOperations opsForList();
    /**
     * 
     * 操作hash <br/> 
     * opsForHash <br/> 
     * @return  HashOperations <br/>
     */
    public HashOperations opsForHash();
    /**
     * 
     * 操作set<br/> 
     * opsForSet <br/> 
     * @return  SetOperations <br/>
     */
    public SetOperations opsForSet();
    /**
     * 
     * 操作zset <br/> 
     * opsForZSet <br/> 
     * @return  ZSetOperations <br/>
     */
    public ZSetOperations opsForZSet();
    
    /**
     * 
     * key 操作类 <br/> 
     * opsForZSet <br/> 
     * @return  ZSetOperations <br/>
     */
    public KeyOperations opsForKey();
    
}
